import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            char[] c = in.nextLine().toCharArray();
            int n = c.length;
            int[][] dp = new int[n][n];
            // dp[i][j]表示[i,j]之间的字符串是否是回文串
            // len[i][j]表示[i,j]之间的最长回文子序列的长度
            for (int i = 0; i < n; i++) {
                for (int j = i; j >= 0; j--) {
                    if (j + 1 >= i) {
                        dp[j][i] = c[i] == c[j] ? i-j+1 : 1;
                    } else {
                        if (c[i] == c[j]) {
                            dp[j][i] = dp[j+1][i-1]+2;
                        } else {
                            dp[j][i] = Math.max(dp[j][i-1], dp[j+1][i]);
                        }
                    }
                }
            }
            System.out.println(dp[0][n-1]);
        }
    }
}
